<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // promise 的静态方法;
        // 1.Promise.resolve(); :快速创建一个 成功状态promise对象;
        // let p = new Promise(resolve=>{
        //     resolve('success');
        // })
        // console.log(p);


        // let p = Promise.resolve('success');
        // console.log(p);

        // 2.Promise.reject(); 快速创建一个失败状态的promise对象

        // let p = new Promise(reject=>{
        //     reject('error');
        // })
        // console.log(p);

        // let p = Promise.reject('error')
        // console.log(p);


        // 3.Promise.race();执行多个promise对象,获取执行快的promise对象结果;
        // let p1 = new Promise((resolve,reject)=>{
        //     setTimeout(() => {
        //         resolve(111)
        //     }, 2000);
        // })  

        // let p2 = new Promise((resovle , reject)=>{
        //     setTimeout(() => {
        //         resovle(222);
        //     }, 1000);
        // })

        // let p3 = new Promise((resovle,reject)=>{
        //     setTimeout(() => {
        //         resovle(333);
        //     },3000);
        // })
        // // 寻找定时器时间最短的那个
        // Promise.race([p1,p2,p3]).then(res=>{
        //     console.log(res);
        // },err=>{
        //     console.log('error',err);
        // })

        // 4.Promise.all(); 可以执行多个promise对象,可以收集所有promise对象的结果.
        let p1 = new Promise((resolve,reject)=>{
            setTimeout(() => {
                resolve(1111);
            }, 2000);
        })

        let p2 = new Promise((resolve,reject)=>{
            setTimeout(() => {
                resolve(2222);
                // reject(111)
            }, 1000);
        })
        
        let p3 = new Promise((resolve,reject)=>{
            setTimeout(() => {
                resolve(333)
            }, 3000);
        })
        // 只返回一个数组promise对象resolve正确的值 打印一个数组
        Promise.all([p1,p2,p3]).then(res=>{
          console.log(res);
        })

        // 5.Promise.allSettled(); 可以执行多个 promise对象,可以获取 所有promise对象成功或者失败的结果

        // let p1 = new Promise((resolve,reject)=>{
        //     setTimeout(() => {
        //         resolve(111)
        //     }, 2000);
        // })

        // let p2 = new Promise((resolve,reject)=>{
        //     setTimeout(() => {
        //         // resolve(2222)
        //         reject(111);
        //     }, 1000);
        // })

        // let p3 = new Promise((resolve,reject)=>{
        //     setTimeout(() => {
        //         resolve(333)
        //     }, 3000);
        // })

        // // 同时执行 多个异步 promise 返回最后是一个数组对象 , 不是依次执行
        // // 不管是fulfilled或rejected 都返回
        // Promise.allSettled([p1,p2,p3]).then(res=>{
        //     console.log(res);
        // })
    </script>
</body>
</html>